import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

import '../../util/throttler.dart';

class IconButtonPage extends StatelessWidget {
  const IconButtonPage({super.key});

  @override
  Widget build(BuildContext context) {
    var click = throttle(callback, const Duration(seconds: 1));
    return Scaffold(
      appBar: AppBar(title: const Text('IconButton 所有属性示例')),
      body: Center(
        child: IconButton(
          // 显示的图标（必须）
          icon: const Icon(Icons.favorite),

          // 图标大小（逻辑像素）
          iconSize: 32.0,

          // 点击事件
          onPressed: () {
            click();
          },

          // 禁用状态时显示的图标颜色
          disabledColor: Colors.grey,

          // 激活状态图标颜色
          color: Colors.red,

          // 高亮时图标颜色（长按或聚焦）
          highlightColor: Colors.orangeAccent,

          // 按下时水波纹颜色
          splashColor: Colors.blueAccent,

          // 鼠标悬停时颜色（Web/Desktop）
          hoverColor: Colors.yellow,

          // 对焦状态颜色
          focusColor: Colors.green,

          // 按钮内边距
          padding: const EdgeInsets.all(16.0),

          // 对齐方式
          alignment: Alignment.center,

          // 按钮最小大小（可用于扩大点击区域）
          constraints: const BoxConstraints(
            minWidth: 48.0,
            minHeight: 48.0,
          ),

          // 是否启用自动对焦（一般用于键盘导航）
          autofocus: true,

          // 可访问性提示信息
          tooltip: '点赞',

          // 自定义焦点节点（可选）
          focusNode: FocusNode(),

          // 启用 Material Ink 效果（默认 true）
          enableFeedback: true,

          // 图标方向支持 RTL 文字
          isSelected: false, // 只有在 toggle 模式时有用（Flutter 3.3+）

          // 自定义按钮样式（Flutter 3.10+）
          style: ButtonStyle(
            backgroundColor: MaterialStateProperty.all(Colors.white),
            overlayColor: MaterialStateProperty.resolveWith<Color?>(
              (Set<MaterialState> states) {
                if (states.contains(MaterialState.pressed)) {
                  return Colors.red.withOpacity(0.2);
                }
                return null;
              },
            ),
          ),
        ),
      ),
    );
  }

  callback() {
    debugPrint('按钮被点击了');
  }
}
